// 消息中心 - 所有消息数据都在这里统一管理
import { Message } from '../types/message';

export const messageData: Message[] = [
  {
    id: 1,
    type: '系统通知',
    title: '系统维护通知',
    content: '系统将于今晚23:00-01:00进行维护，期间可能无法正常访问，请提前做好准备。',
    time: '2024-01-15 10:30:00',
    read: false,
    important: true,
    sender: '系统管理员',
    relatedId: undefined,
    actionUrl: '/settings'
  },
  {
    id: 2,
    type: '任务提醒',
    title: '新任务分配',
    content: '您有一个新的任务需要处理："用户管理模块优化"，请及时查看并处理。',
    time: '2024-01-15 09:15:00',
    read: false,
    important: true,
    sender: '项目经理',
    relatedId: 101,
    actionUrl: '/tasks/101'
  },
  {
    id: 3,
    type: '项目更新',
    title: '项目进度更新',
    content: '项目"KZ-DevOps平台"已完成80%，请关注最新进展。',
    time: '2024-01-14 16:45:00',
    read: true,
    important: false,
    sender: '项目总监',
    relatedId: 201,
    actionUrl: '/projects/201'
  },
  {
    id: 4,
    type: '缺陷提醒',
    title: '发现新缺陷',
    content: '在用户管理模块中发现一个严重缺陷，请相关开发人员及时修复。',
    time: '2024-01-14 14:20:00',
    read: true,
    important: true,
    sender: '测试工程师',
    relatedId: 301,
    actionUrl: '/bugs/301'
  },
  {
    id: 5,
    type: '团队协作',
    title: '团队会议提醒',
    content: '本周五下午14:00将召开项目进度评审会议，请准时参加。',
    time: '2024-01-14 11:30:00',
    read: true,
    important: false,
    sender: '团队负责人',
    relatedId: undefined,
    actionUrl: '/calendar'
  },
  {
    id: 6,
    type: '系统通知',
    title: '密码策略更新',
    content: '系统密码策略已更新，要求密码长度至少8位，包含大小写字母和数字。',
    time: '2024-01-13 17:00:00',
    read: true,
    important: false,
    sender: '安全管理员',
    relatedId: undefined,
    actionUrl: '/settings/security'
  },
  {
    id: 7,
    type: '任务提醒',
    title: '任务即将到期',
    content: '任务"权限管理模块开发"还有2天到期，请加快进度。',
    time: '2024-01-13 15:20:00',
    read: false,
    important: true,
    sender: '项目经理',
    relatedId: 102,
    actionUrl: '/tasks/102'
  },
  {
    id: 8,
    type: '项目更新',
    title: '新版本发布',
    content: '项目"KZ-DevOps平台"v1.2.0版本已发布，包含多项功能优化。',
    time: '2024-01-12 10:00:00',
    read: true,
    important: false,
    sender: '产品经理',
    relatedId: 201,
    actionUrl: '/projects/201'
  },
  {
    id: 9,
    type: '缺陷提醒',
    title: '缺陷已修复',
    content: '用户管理模块中的权限验证缺陷已修复，请测试人员验证。',
    time: '2024-01-12 09:30:00',
    read: true,
    important: false,
    sender: '开发工程师',
    relatedId: 302,
    actionUrl: '/bugs/302'
  },
  {
    id: 10,
    type: '团队协作',
    title: '文档共享',
    content: '项目需求文档已更新，请团队成员及时查看最新版本。',
    time: '2024-01-11 16:15:00',
    read: true,
    important: false,
    sender: '产品经理',
    relatedId: undefined,
    actionUrl: '/knowledge'
  }
];

// 生成更多测试数据
const messageTypes = ['系统通知', '任务提醒', '项目更新', '缺陷提醒', '团队协作'];
const senders = ['系统管理员', '项目经理', '开发工程师', '测试工程师', '产品经理', '团队负责人', '安全管理员'];
const titles = [
  '系统维护通知', '新任务分配', '项目进度更新', '发现新缺陷', '团队会议提醒',
  '密码策略更新', '任务即将到期', '新版本发布', '缺陷已修复', '文档共享',
  '性能优化完成', '安全漏洞修复', '需求变更通知', '代码审查提醒', '部署成功'
];
const contents = [
  '系统将于今晚进行维护，请提前做好准备。',
  '您有一个新的任务需要处理，请及时查看。',
  '项目已完成重要里程碑，请关注最新进展。',
  '发现一个需要紧急处理的缺陷。',
  '请准时参加团队会议。',
  '系统策略已更新，请及时了解。',
  '任务即将到期，请加快进度。',
  '新版本已发布，包含多项优化。',
  '缺陷已修复，请验证效果。',
  '重要文档已更新，请及时查看。'
];

for (let i = 11; i <= 50; i++) {
  const daysAgo = Math.floor(Math.random() * 30);
  const date = new Date();
  date.setDate(date.getDate() - daysAgo);
  
  messageData.push({
    id: i,
    type: messageTypes[Math.floor(Math.random() * messageTypes.length)],
    title: titles[Math.floor(Math.random() * titles.length)] + ` #${i}`,
    content: contents[Math.floor(Math.random() * contents.length)],
    time: date.toISOString().replace('T', ' ').substring(0, 19),
    read: Math.random() > 0.3,
    important: Math.random() > 0.7,
    sender: senders[Math.floor(Math.random() * senders.length)],
    relatedId: Math.random() > 0.5 ? Math.floor(Math.random() * 1000) : undefined,
    actionUrl: Math.random() > 0.5 ? '/tasks/' + Math.floor(Math.random() * 1000) : undefined,
  });
}

// 消息统计计算
export const getMessageStats = (messages: Message[]) => {
  const stats = {
    total: messages.length,
    unread: messages.filter(msg => !msg.read).length,
    important: messages.filter(msg => msg.important).length,
    byType: {} as Record<string, number>
  };
  
  const messageTypes = ['系统通知', '任务提醒', '项目更新', '缺陷提醒', '团队协作'];
  messageTypes.forEach(type => {
    stats.byType[type] = messages.filter(msg => msg.type === type).length;
  });
  
  return stats;
};